#!/bin/bash

# 设置必要的环境变量
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
export MYSQL_USER="root"
export MYSQL_PASSWORD="root"
export DATABASE_NAME="cz"
export MYSQL_HOST=$(hostname -I | awk '{print$1}')

# 检查数据库是否存在的函数
check_database() {
    # 使用mysql命令检查数据库是否存在
    local sts=$(docker exec -i mysql mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "SHOW DATABASES LIKE '$DATABASE_NAME';" 2>/dev/null | grep -w "$DATABASE_NAME" | wc -l)
    if [ "$sts" -eq 0 ]; then
        return 1 # 如果数据库不存在，返回1
    else
        return 0 # 如果数据库存在，返回0
    fi
}

# 创建数据库的函数
create_database() {
    echo "正在创建数据库 '$DATABASE_NAME'..."
    # 执行创建数据库的命令
    docker exec -i mysql mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "CREATE DATABASE IF NOT EXISTS$DATABASE_NAME;" 2>/dev/null
    if [ $? -eq 0 ]; then
        echo "数据库 '$DATABASE_NAME' 创建成功。" | tee -a /var/log/sujuku.log
    else
        echo "数据库 '$DATABASE_NAME' 创建失败。" | tee -a /var/log/sujuku.log
        exit 1 # 创建失败时退出脚本
    fi
}

# 主逻辑
if check_database; then
    echo "数据库 '$DATABASE_NAME' 已存在，继续执行下一步。" | tee -a /var/log/sujuku.log
else
    create_database
fi

# 数据库存在或创建成功后，执行node应用的初始化
echo "正在初始化node应用..."
docker exec -i node npm run init

# 检查node应用初始化是否成功
if [ $? -eq 0 ]; then
    echo "node应用初始化成功。" | tee -a /var/log/sujuku.log
    # 初始化成功后退出脚本
    exit 0
else
    echo "node应用初始化失败。" | tee -a /var/log/sujuku.log
    # 初始化失败时退出脚本
    exit 1
fi
